package grad.nxu.recruitsystem.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Author: HAPPY
 * @Project_name: recruitSystem
 * @Package_name: grad.nxu.recruitsystem.config
 * @Date: 2023/3/1 0:24
 * @Description: 跨域
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {

    //    //改用过滤器CorsFilter 来配置跨域，由于Filter的位置是在Interceptor之前的，问题得到解决
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        // 设置允许跨域请求的域名
        config.addAllowedOrigin("*");
        // 是否允许证书
        config.setAllowCredentials(false);
        // 设置允许的方法
        config.addAllowedMethod("*");
        // 允许任何头
        config.addAllowedHeader("*");
        config.addExposedHeader("*");
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);
        return new CorsFilter(configSource);
    }

//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        //CorsRegistration addMapping(String pathPattern): 添加路径映射，如 /admin/info，或者 /admin/**
//        registry.addMapping("/**")
//                //是否发送Cookie
//                .allowCredentials(true)
//                //放行哪些原始域, * 表示所有
//                .allowedOriginPatterns("*")
//                //放行哪些请求方式
//                .allowedMethods("GET", "POST", "PUT", "DELETE")
//                //放行哪些原始请求头部信息
//                .allowedHeaders("*");
//        //暴露哪些头部信息，不能设置为 * : .exposedHeaders();
//    }
}
